Workshop Ciencia Abierta
7 de enero de 2024
Es la práctica de conducir estudios científicos o basados en datos de tal manera que permita a otros replicar o reproducir los resultados usando los mismos datos, códigos y metodologías.
Los autores entregan todos los datos necesarios y los códigos computacionales para realizar el análisis nuevamente, recreando los resultados.
Un estudio que llega a los mismos hallazgos científicos que otro estudio, recolectando nuevos datos (posiblemente con diferentes métodos) y completando nuevos análisis.
Reproducibilidad Computacional: Cuando se proporciona información detallada sobre el código, software, hardware y detalles de la implementación
Reproducibilidad Empírica: Cuando se proporciona información detallada sobre experimentos y observaciones científicas empíricas no computacionales. En la práctica, esto se ocurre al hacer que los datos y los detalles de cómo se recopilaron estén disponibles de forma gratuita.
Reproducibilidad Estadística: Cuando se proporciona información detallada, por ejemplo, sobre la elección de pruebas estadísticas, parámetros del modelo y valores de umbral. Esto se relaciona principalmente con el registro previo del diseño del estudio para evitar la práctica de p-value hacking y otras manipulaciones.
| Ventajas | Dificultades |
|---|---|
| Historial completo del proyecto | Incentivos limitados |
| Colaboración y Revisión | Sesgo de las investigaciones hacia hallazgos novedosos |
| Evita la desinformación | Mayores estándares |
| Escritura eficiente | Se aplican mayores estándares a las investigaciones reproducibles |
| Reconocimiento justo | No es considerado para las promociones |
| Asegura la continuidad del trabajo | Variabilidad en el rendimiento de los software utilizados |
| Que una investigación sea reproducible no significa que esté correcta | |
| Toma más tiempo |
Solo una proporción muy pequeña de los datos originales se publica en revistas convencionales o investigaciones públicas. A pesar de las políticas existentes sobre el archivo de datos, en la actualidad, los datos se almacenan principalmente en archivos privados, no en repositorios institucionales seguros, y se pierde a ellos por parte del público general.
Esta falta de intercambio de datos es un obstáculo para la investigación internacional (ya sea académica, gubernamental o comercial) por dos razones principales:
Generalmente es difícil o imposible reproducir un estudio sin los datos originales.
Los datos no pueden ser reutilizados o incorporados en nuevos trabajos por otros investigadores si no pueden acceder a ellos.
Cuando un proyecto es de código abierto, cualquiera puede ver, usar, modificar y distribuir el proyecto para cualquier propósito. Estos permisos se aplican a través de una licencia de código abierto
¿Cómo los software de código abierto benefician la investigación?
Re-usable
Comprobable
Colaborativo
https://posit.co/download/rstudio-desktop/
Existen otras alternativas más génericas como Visual Studio Code, un editor de código para múltiples lenguajes. Sin embargo, al no ser un software especializado en R, requiere utilizar extensiones para lograr las funcionalidad que otorga RStudio.
Sistema de control de versiones distribuido que se utiliza para el seguimiento de cambios en archivos de desarrollo software.
Es primordial para seguir la procedencia de la información.
Crea versiones históricas que nos permiten entender que cambios fueron realizados.
Facilita el manejo de distintas versiones de archivos.
Permite seguir y combinar cambios realizados por distintas personas.
El control de versiones es un enfoque sistemático para registrar los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo.
Un flujo de trabajo típico para usar control de versiones es:
Repositorio: Lugar donde se almacenan todos los archivos, carpetas e historial del proyecto.
Commit: Registro de los cambios realizados en los archivos del proyecto en un momento específico.
Ramas (o “Branches”): Espacios de trabajo independientes del desarrollo principal.
Fusiones (o “Merges”): Representa la acción de incorporar los cambios de una Rama (Branch) a otra.
Repositorios remotos: Copias del repositorio almacenadas en un servidor central o en otros equipos.
El Repositorio de un proyecto corresponde al almacén de datos que contiene todos los archivos, carpetas y el historial de cambios del proyecto.
Un repositorio de Git puede estar:
Estar ubicado localmente en la computadora de un desarrollador.
De forma remota en un servidor.
Supongamos que quiero agregar o probar algo nuevo en un archivo antes de que se vea reflejado en archivo principal. ¿Cómo puedo mantener un registro de esto?
Si deseamos tener una control de versión LOCAL, debemos crear un proyecto en RStudio
Para guardar nuestras versiones en Github debemos seguir los siguientes pasos:
Crear repositorio en Github (via web o aplicación de escritorio)
Crear nuevo proyecto (Versión de control > Git > URL del repositorio)
::: {.notes}
Hablamos de que controlar las versiones de los componentes de proyectos en evolución podría ayudar a hacer el trabajo más organizado, eficiente, colaborativo y reproducible. Sin embargo, muchos proyectos científicos no solo contienen código, manuscritos u otros archivos de tamaño pequeño, sino que contienen archivos más grandes como grandes conjuntos de datos, resultados de análisis o archivos binarios (presentaciones, manuscritos, PDFs) que pueden cambiar o actualizarse en un proyecto al igual que otros componentes de texto de tamaño pequeño. En este capítulo, discutimos por qué y cómo hacer versionado de datos, especialmente por qué Git no es adecuado para el versionado de datos y qué se puede hacer al respecto.
:::
Los datos utilizados en los análisis no son estáticos
Los datos pueden mutar no sólo debido a que se ingresa nueva información
En muchas investigaciones se desea experimentar con diferentes versiones del mismo conjunto de datos
Controlar las versiones de conjuntos de datos o de archivos grandes ayuda a la reproducibilidad de un proyecto
La principal limitación que tiene Git es que conforme la cantidad y tamaño de los archivos en el proyecto crecen, se vuelve impracticable el control de versiones.
Entre las herramientas más usadas para el control de versiones para grandes archivos están:
El estándar para investigaciones reproducibles es que los datos cumplan con los principios FAIR
“The FAIR Guiding Principles for scientific data management and stewardship”
Cada computador es un ambiente computacional único que consiste de un sistema operativo, los softwares instalados, sus respectivas versiones entre otras características.
Supongamos que un proyecto de investigación se lleva a cabo en un computador pero luego se transfiere a un computador diferente. No habrá una garantía que el análisis podrá ser realizado o que generará los mismos resultados si estos dependen de algunas de las características mencionadas.
Para que una investigación sea reproducible, el ambiente computacional en el que se conduce debe poder ser replicado.
En términos generales, un ambiente computacional es un sistema donde un programa se ejecuta. Esto incluye las características de hardware y software
Replicar los ambientes computacionales tendrá un potencial impacto en:
Investigadores
Colaboradores
Los sistemas de administración de paquetes son herramientas usadas para instalar y mantener un seguimiento del software usado en un sistema. Los archivos utilizados pueden ser compartidos con otros para que repliquen el ambiente computacional.
Ejemplos:
Binder es un servicio que genera versiones funcionales de proyecto desde un repositorio git y los sube a la nube. Estos proyectos “binderizados” son accesibles desde un navegador de internet.
Binder requiere que el software (y óptimamente, sus versiones) necesario para ejecutar un proyecto sea especificado.
Las máquinas virtuales son computadores simulados. Un usuario puede crear un computador “virtual” fácilmente, especificando el sistema operativo que quieren tener, entre otras características, y ejecutarlo como cualquier otra aplicación.
Los contenedores proveen muchos de los beneficios de una máquina virtual, pues esencialmente actúan como máquinas independientes que contienen sus propios archivos, softwares y configuraciones.
La diferencia radica en que una máquina virtual incluye un sistema operativo junto con sus softwares, independientemente si el proyecto los utiliza. En cambio, los contenedores sólo incluyen el software y archivos explícitamente definidos para ejecutar un proyecto particular.
renv en el nuevo proyectorenv::init() para proyectos existentesrenv::snapshot() para capturar el ambienterenv::init() tendremos opciones para restaurar, descartar o activar el ambiente computacionalrenv::dependencies() nos entrega los paquetes de los cuales depende nuestro proyecto.Generaremos un proyecto desde cero que tenga las siguientes características:
Software de composición de textos
Consiste en un software de uso libre, capaz de generar documentos escritos de alta calidad.
Le da prioridad a la estructura lógica del texto, permitiendo mantener una mayor trazabilidad y orden en el contenido.
Se utiliza ampliamente en el contexto de artículos y documentación científica, debido a su facilidad para trabajar formulas matemáticas.
| Categoría | MS Word | LaTeX |
|---|---|---|
| Facilidad de uso | Relativamente fácil de usar | Difícil de aprender. Fácil una vez que se entiende la estructura de los documentos. |
| Eficiencia | Excelente para documentos cortos. No escalable. | OK para documentos cortos. Excelente para documentos técnicos y extensos. |
| Calidad | Es posible redactar documentos bien formateados, pero requiere mucho tiempo dada las limitaciones de word. | Fácil creación de documentos bien formateados. |
| Características | Herramientas limitadas. | Muchas herramientas vía extensiones. |
| Precio | De pago, pero existen alternativas gratis como Google Docs. | Gratis (Open-source) |
\(\LaTeX\) local:
\(\LaTeX\) online:
Documentos Académicos
Libros y Revistas
Presentaciones
Documentos Técnicos
Documentos Matemáticos y Científicos
Cartas y Documentos Formales
Generación Automatizada de Documentos
Ofrece flexibilidad, manteniendo un formato coherente y formal, además de tener la capacidad de gestionar referencias cruzadas, bibliográficas y fórmulas matemáticas.
Definidos como Editores de texto, consisten en la aplicación que le permite a un usuario escribir el LaTeX.
Editores de Latex: Creados exclusivamente para escribir en LaTeX.
Editores de Texto Avanzado: Abarcan mas lenguajes que LaTeX.
Editores en Línea: Basados en el navegador con funciones de colaboración en tiempo real.
Para la siguiente parte del curso usaremos Overleaf
Formato \(\rightarrow\) Portada \(\rightarrow\) Contenido
Antes de empezar a editar la portada o el contenido del documento es importante definir los parámetros que condicionaran el formato y el orden que seguirá el texto.
Algunas funciones requieren de paquetes (librerías) para que el software las reconozca. Para aprovechar estas funciones se debe especificar que paquetes deben ser reconocidos a la hora de compilar el documento
Creación del Documento y definición de parámetros.
\documentclass{article} %Definición del Documento
\usepackage[spanish]{babel} %Configuración de Idioma
\usepackage[letterpaper,
top=2cm,
bottom=2cm,
left=3cm,
right=3cm,
marginparwidth=1.75cm]{geometry} %Parámetros
%Paquetes de ejemplo
\usepackage[utf8]{inputenc}
\usepackage{underscore}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{datetime}
\usepackage{ragged2e}
\usepackage{parskip}
\newdateformat{monthyeardate}{%
\monthname[\THEMONTH], \THEYEAR}
\title{Latex} %Titulo
\author{Eloy Alvarado} %Autor
\begin{document} %Inicio del Contenido\begin{titlepage} %Inicio portada
%Imagen
\begin{figure}[h]
\vspace{10mm} %Espacio Vertical
\centering
\includegraphics[scale=0.15]{logo_usm.png} %Logo USM
\end{figure}
\vspace{50mm}
\begin{center}
\hrule %Linea Horizontal
\vspace{2mm}
{\Huge \textbf{\sc Presentación}}\\ %Titulo
\vspace{2mm}
{\Large \sc{Latex}}
\vspace{2mm}
\hrule
\vspace{1cm}
\centering
\textbf{Autor: Eloy Alvarado} \\ %Autor
\vfill
\textsc{\monthyeardate\today}\\[0.5cm] %Fecha
\end{center}
\end{titlepage}\section{Contenido}
\justifying
En este documento de LaTeX, se presenta de manera
detallada y exhaustiva el contenido que se puede
incluir en el mismo. A través del lenguaje de
marcado LaTeX, es posible crear y formatear textos
de forma justificada, permitiendo así una
presentación clara y profesional. Además, LaTeX
ofrece la flexibilidad para incorporar fórmulas
matemáticas dentro del propio texto, lo que resulta
especialmente útil para expresar
conceptos matemáticos de manera precisa y elegante.
\subsection{Formato de Texto}
LaTeX entrega la libertad de modificar el texto
según las necesidades de quien edita, permitiendo:
\begin{itemize}
\item Textos centrados:
LaTeX \centering
\item Textos a la derecha: \justifying
LaTeX \raggedleft
\item Textos en Negrita: \textbf{LaTeX}
\justifying
\item Textos en Cursiva: \textit{LaTeX}
\item Textos en otra tipografía: \texttt{LaTeX}
\end{itemize}
Entre muchas opciones más.
\justifying
\subsection{Matemática}
Respecto a la matemática, la principal
de este software, existen múltiples de
materializarla.
\vspace{10mm}
\textbf{Modo de ecuación numerada}: para que
el documento asocie la ecuación a un numero de
forma automática permitiendo hacer referencia
a ella en el texto.
\centering
\begin{math}
\sqrt{x^2+1}
\end{math}
\justifying
\vspace{10mm}
\textbf{Modo de ecuación sin enumerado}: Para que
quede centrada y quede en una linea separada,
dandole mas enfasís.
\[\sqrt{x^2+1}\]
$$\sqrt{x^2+1}$$
\textbf{Modo en línea}: para incluir formulas
dentro del texto $\sqrt{x^2+1}$
\end{document}El texto en Latex se escribe directamente, si es que no se le desea asignar algún formato.
El término neolatino 'Plantae' y el castellano 'plantas'
derivan del latín planta (brote, retoño), plantare
(quedarse allí donde las plantas de los pies tocan el suelo).
Desde este punto de vista, podríamos llamar planta a cualquier
ser plantado en el suelo o en un sustrato; sin embargo,
podemos ver excepciones en algunos briófitos y en la angiosperma
lenteja de agua, que no están fijos, pero los consideramos plantas.Para destacar y darle un formato especifico al texto anterior existen múltiples comandos, siendo los principales
Ajustando el texto anterior
El término neolatino \textit{'Plantae'} y el castellano \textit{'plantas'}
derivan del latín \textbf{planta} (brote, retoño), \textbf{plantare}
(quedarse allí donde las plantas de los pies tocan el suelo).
Desde este punto de vista, podríamos llamar planta a cualquier
ser plantado en el suelo o en un sustrato; sin embargo,
podemos ver excepciones en algunos \textbf{briófitos} y en la \textbf{angiosperma}
lenteja de agua, que no están fijos, pero los consideramos plantas.Para separar párrafos en LaTeX, basta con colocar una linea en blanco entre párrafos.
...sin embargo, podemos ver excepciones en algunos \textbf{briófitos} y
en la \textbf{angiosperma} lenteja de agua, que no están fijos, pero
los consideramos plantas.
Por otro lado, el concepto moderno de planta, viene del sistema de
clasificación de Haeckel, quien descarta el antiguo reino vegetal,
creando un nuevo reino Plantae con un sentido más natural y con sus
características comunes, por lo que este nuevo reino no admite como
miembros a otros organismos que no están relacionados con las plantas
terrestres, como sucede con las bacterias, los hongos y las protistas en general.Es necesario tener el paquete parskip para que lo anterior funcione
LaTeX basa su jerarquía en Secciones y Subsecciones, las cuales son ordenadas automáticamente según el orden lógico que siguen.
Los elementos de estos listados se denominan items:
Para Insertar citas y referencias es necesario adjuntar al documento de LaTeX un archivo bib (Base de datos en BibTex) que contendrá la información bibliográfica de las fuentes citadas en el documento.
Las entradas en este documento tienen la siguiente sintaxis:
@article{Smith2021, %Identificador de Referencia
author = {John Smith and María López},
title = {Environmental Challenges in Chile: A Case Study of the Atacama Desert},
journal = {Environmental Science Journal},
volume = {25},
number = {3},
pages = {201--215},
year = {2021},
doi = {10.12345/esj.2021.25.3.201},
publisher = {Springer}
}Si se desease utilizar la referencia anterior en una cita se debe adjuntar el comando
Si bien en \(\LaTeX\) requiere un archivo .bib que guarde las referencias que utilizaremos, existen gestores de referencias bibliográficas que nos permiten construir fácilmente este archivo.
Para incorporar la bibliografía al texto incluímos:
En términos Visuales, la calidad tipográfica genera documentos con un aspecto profesional y agradable a la vista.
Por su construcción lógica, LaTeX separa el contenido del documento de su formato, lo que garantiza una consistencia y uniformidad en la apariencia del documento.
Ofrece alta Portabilidad debido a que los documentos LaTeX son compatibles con múltiples plataformas, facilitando la colaboración y el intercambio de documentos.
Es muy cómodo para la construcción y composición de expresiones matemáticas complejas.
\[\begin{equation} z=\overbrace{\underbrace{x}_\text{real}+i\underbrace{y}_\text{imaginario}}^\text{numero complejo} \end{equation}\]
\[\begin{equation} A \xleftarrow{\text{Izquierda}} B \xrightarrow[\text{Derecha}]{ } C \end{equation}\]
Overleaf tiene integraciones con distintas herramientas:
entre otros. Sin embargo, muchas de estas integratciones requieren una cuenta premium.
Escoger un informe y replicar su contenido en \(\LaTeX\) (incluida la bibliografía), guardando el proyecto en un repositorio GitHub.
Para esto se puede usar un template o desde cero.
Ambos lenguajes nos permiten realizar investigaciones reproducibles.
RyPythonno son mutuamente excluyentes
El paquete reticulate nos permite ejecutar código Python en nuestros archivos R.
. . .
También es posible ejecutar código R en Python utilizando la librería rpy2
En lo que resta del curso, asumiremos que se tiene un nivel básico de R; esto es, conocer los operadores básicos de R: funciones, operaciones matemáticas y objectos (vectores, escalares, etc.)
Para una introducción a R, ver Introducción a R del R Development Core Team
Cada objeto en R es de un tipo base y sólo R-core puede crear nuevos tipos
Existen 5 tipos de datos base:
double,integer,complex,logicalycharacter. Estos también pueden ser tipoNULL.
Sin importar la complejidad del análisis, en R todos los datos son interpretados como alguno de estos tipos base
Una característica distintiva de las matrices es que todos los valores son del mismo tipo de dato
Los vectores son matrices 1-dimensionales.
¿Qué producirá el siguiente código?:
Respuesta:
[1] "2" "6" "3"
En lo anterior, se realizó una coerción de tipo. No tener claridad de cómo funciona esto, es lo que usualmente dificulta programar correctamente un código en R.
La coerción ocurre cuando ingresamos datos de distinto tipo en un objeto que sólo permite que sus valores sean de un sólo tipo
Reglas de coerción:
logical -> integer -> numeric -> complex -> character
Leemos -> como “puede ser transformado en”
Las listas puede guardar objetos de cualquier tipo o clase
Las matrices y listas tienen un tipo base inmutable. En contraste, en R existen los objetos S3, S4 y S6; siendo S3 el más común.
Estos objetos tienen un atributo de clase, que permite que existan funcionalidad especificas para aquella clase. Esto es una característica principal de la programación orientada a objetos
Tidyverse es un sistema coherente de paquetes para manipulación, exploración y visualización de datos que comparten una filosofía de diseño común.
Ventajas:
tibbles como estructura principal de datos
tibbleses una de las características unificadoras de tidyverse; es la versión tidyverse de los objetos data.frame
Sus características principales son:
Para transformar un objeto data.frame a tibble escribimos:
El paquete readr contiene funciones simples y consistentes para importar datos guardados como documentos de archivo sin formato. Ofrece una alternativa a las funciones básicas de R.
Entre sus principales ventajas están:
stringsAsFactors = TRUE| Funciones | Lee |
|---|---|
read_csv() |
Comma separated values |
read_csv2() |
Semi-colon separate values |
read_delim() |
General delimited files |
read_fwf() |
Fixed width files |
read_log() |
Apache log files |
read_table() |
Space separated files |
read_tsv() |
Tab delimited values |
| Funciones | Escribe |
|---|---|
write_csv() |
Comma separated values |
write_excel_csv() |
CSV que se planea abrir en Excel |
write_delim() |
General delimited files |
write_file() |
Un string, escrito tal como está |
write_lines() |
Un vector de strings, un string por línea |
write_tsv() |
Tab delimited values |
Existen otros paquetes que nos permiten leer archivos en distintos formatos, entre ellos:
| Paquete | Lee |
|---|---|
| haven | Archivos de SPSS, Stata y SAS |
| readxl | Archivos excel (.xls, .xlsx) |
| jsonlite | json |
| xml2 | xml |
| httr | web API’s |
| rvest | Páginas web (web scraping) |
| DBI | databases |
| sparklyr | datos cargados en spark |
El paquete dplyr es una gramática para la manipulación de datos. Sus funciones se definen como verbos.
Entre las funciones más utilizadas en este paquete se encuentras:
%>%group_by & filtermutateselectEl paquete tidyr tiene por finalidad transformar los datos en formato tidy.
El paquete ggplot2 es un sistema para crear gráficos de manera declarativa. Se provee los datos, se configura como relacionar las variables a lo elementos estéticos, que estilo de gráfico se desea y el paquete hace el resto.
En general, la estructura de un gráfico de ggplot es:
Los gráficos creados con ggplot2 se ha vuelto el estándar para las investigaciones reproducibles. Existen múltiples extensiones que complementan a ggplot2. También hay un repositorio que los pone a disposición.
tidymodels es un sistema coherente de paquetes para creación de modelos y uso de machine learning bajo los principios de tidyverse.
rsample nos entrega herramientas para realizar diferentes tipos de muestreorecipes nos entrega herramientas para organizar el preprocesamiento y el feature engineering parsnip nos entrega herramientas para definir modelosyardstick nos entrega herramientas para calcular métricas de desempeño de los modelosworkflows nos entrega herramientas para combinar las etapas de preprocesamiento y creación de modelosPodemos utilizar parsnip_addin() para ver los modelos compatibles con el paquete.
# A tibble: 344 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<fct> <fct> <dbl> <dbl> <int> <int>
1 Adelie Torgersen 39.1 18.7 181 3750
2 Adelie Torgersen 39.5 17.4 186 3800
3 Adelie Torgersen 40.3 18 195 3250
4 Adelie Torgersen NA NA NA NA
5 Adelie Torgersen 36.7 19.3 193 3450
6 Adelie Torgersen 39.3 20.6 190 3650
7 Adelie Torgersen 38.9 17.8 181 3625
8 Adelie Torgersen 39.2 19.6 195 4675
9 Adelie Torgersen 34.1 18.1 193 3475
10 Adelie Torgersen 42 20.2 190 4250
# ℹ 334 more rows
# ℹ 2 more variables: sex <fct>, year <int>
penguins %>%
filter(!is.na(sex)) %>%
ggplot(aes(flipper_length_mm, bill_length_mm, color = sex, size = body_mass_g)) +
geom_point(alpha = 0.5) +
facet_wrap(~species)library(tidymodels)
set.seed(123)
penguin_split <- initial_split(penguins_df, strata = sex)
penguin_train <- training(penguin_split)
penguin_test <- testing(penguin_split)
penguin_split<Training/Testing/Total>
<249/84/333>
# Bootstrap sampling
# A tibble: 25 × 2
splits id
<list> <chr>
1 <split [249/93]> Bootstrap01
2 <split [249/91]> Bootstrap02
3 <split [249/90]> Bootstrap03
4 <split [249/91]> Bootstrap04
5 <split [249/85]> Bootstrap05
6 <split [249/87]> Bootstrap06
7 <split [249/94]> Bootstrap07
8 <split [249/88]> Bootstrap08
9 <split [249/95]> Bootstrap09
10 <split [249/89]> Bootstrap10
# ℹ 15 more rows
Para este ejemplo realizaremos un modelo de regresión logística y un random forest para predecir el sexo de los pingüinos.
Logistic Regression Model Specification (classification)
Computational engine: glm
Random Forest Model Specification (classification)
Computational engine: ranger
══ Workflow ════════════════════════════════════════════════════════════════════
Preprocessor: Formula
Model: None
── Preprocessor ────────────────────────────────────────────────────────────────
sex ~ .
glm_rs <- penguin_wf %>%
add_model(glm_spec) %>%
fit_resamples(
resamples = penguin_boot,
control = control_resamples(save_pred = TRUE)
)
glm_rs# Resampling results
# Bootstrap sampling
# A tibble: 25 × 5
splits id .metrics .notes .predictions
<list> <chr> <list> <list> <list>
1 <split [249/93]> Bootstrap01 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
2 <split [249/91]> Bootstrap02 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
3 <split [249/90]> Bootstrap03 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
4 <split [249/91]> Bootstrap04 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
5 <split [249/85]> Bootstrap05 <tibble [2 × 4]> <tibble [1 × 3]> <tibble>
6 <split [249/87]> Bootstrap06 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
7 <split [249/94]> Bootstrap07 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
8 <split [249/88]> Bootstrap08 <tibble [2 × 4]> <tibble [1 × 3]> <tibble>
9 <split [249/95]> Bootstrap09 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
10 <split [249/89]> Bootstrap10 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
# ℹ 15 more rows
There were issues with some computations:
- Warning(s) x3: glm.fit: fitted probabilities numerically 0 or 1 occurred
Run `show_notes(.Last.tune.result)` for more information.
rf_rs <- penguin_wf %>%
add_model(rf_spec) %>%
fit_resamples(
resamples = penguin_boot,
control = control_resamples(save_pred = TRUE)
)
rf_rs# Resampling results
# Bootstrap sampling
# A tibble: 25 × 5
splits id .metrics .notes .predictions
<list> <chr> <list> <list> <list>
1 <split [249/93]> Bootstrap01 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
2 <split [249/91]> Bootstrap02 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
3 <split [249/90]> Bootstrap03 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
4 <split [249/91]> Bootstrap04 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
5 <split [249/85]> Bootstrap05 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
6 <split [249/87]> Bootstrap06 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
7 <split [249/94]> Bootstrap07 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
8 <split [249/88]> Bootstrap08 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
9 <split [249/95]> Bootstrap09 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
10 <split [249/89]> Bootstrap10 <tibble [2 × 4]> <tibble [0 × 3]> <tibble>
# ℹ 15 more rows
# A tibble: 2 × 6
.metric .estimator mean n std_err .config
<chr> <chr> <dbl> <int> <dbl> <chr>
1 accuracy binary 0.915 25 0.00561 Preprocessor1_Model1
2 roc_auc binary 0.977 25 0.00212 Preprocessor1_Model1
# A tibble: 2 × 6
.metric .estimator mean n std_err .config
<chr> <chr> <dbl> <int> <dbl> <chr>
1 accuracy binary 0.916 25 0.00637 Preprocessor1_Model1
2 roc_auc binary 0.978 25 0.00270 Preprocessor1_Model1
El modelo lineal tiene mejor desempeño que un random forest, por lo que lo analizamos en detalle.
# A tibble: 4 × 3
Prediction Truth Freq
<fct> <fct> <dbl>
1 female female 41.0
2 female male 3.08
3 male female 4.52
4 male male 42.2
Utilizamos el conjunto de prueba en nuestro modelo lineal
# Resampling results
# Manual resampling
# A tibble: 1 × 6
splits id .metrics .notes .predictions .workflow
<list> <chr> <list> <list> <list> <list>
1 <split [249/84]> train/test split <tibble> <tibble> <tibble> <workflow>
# A tibble: 8 × 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 2.22e+44 903. 0.113 0.910
2 speciesChinstrap 1.33e- 4 2.35 -3.80 0.000147
3 speciesGentoo 1.01e- 5 3.80 -3.03 0.00246
4 bill_length_mm 1.91e+ 0 0.180 3.60 0.000321
5 bill_depth_mm 8.08e+ 0 0.497 4.21 0.0000259
6 flipper_length_mm 1.06e+ 0 0.0669 0.939 0.348
7 body_mass_g 1.01e+ 0 0.00180 4.44 0.00000916
8 year 9.02e- 1 0.450 -0.228 0.819
Utilizaremos un conjunto de datos de del proyecto tidytuesday como nuestro objeto de estudio; Himalayan Climbing Expeditions.
El conjunto de datos contiene un gran registro (entre 1905-2019) de varios peaks de la cordillera del Himalaya. las expediciones realizadas e integrantes de cada expedición.
Objetivo: Predecir la probabilidad de que una expedición tenga un final letal.
El paquete rmarkdown provee un marco de escritura para investigaciones cuentitativas, que combina códigos, resultados y texto. Los documento R Markdown son completamente reproducibles y permiten generar archivos en distintos formatos: PDF, Word, Presentaciones y más. Quarto es la nueva generación de esta herramienta para incluir distintos lenguajes.
Los archivos Quarto fueron diseñados para ser usados de tres maneras:
Para comunicar a los tomadores de decisiones, quienes quieren centrarse en las conclusiones, no en el código detrás del análisis.
Para colaborar con otros investigadores, quienes están interesados en las conclusiones y el cómo se llego a ellas (i.e. el código)
Como un ambiente para hacer análisis, como un notebook donde se puede capturar el trabajo realizado junto a notas de este.
Quarto para su sistema operativoRStudio y crear documento .qmdqmd: archivo de origenknitr: Herramienta que interpreta y ejecuta códigos y lo traduce en texto markdownmd: texto escrito en lenguaje markdownpandoc: Herramienta que convierte archivos .md enb distintos formatosYAMLQuartoR, Python, Julia, Observable)YAML es un formato de serialización de datos que puede ser leído fácilmente. Su uso es amplio, desde Acciones en GitHub hasta Quarto
Un ejemplo de YAML que difine un ambiente computacional podría ser:
# Define the operating system as Linux
os: linux
# Use the xenial distribution of Linux
dist: xenial
# Use the programming language Python
language: python
# Use version of Python 3.2
python: 3.2
YAML nos será de particular interés para la creación de documentos y presentaciones reproducibles, utilizando quarto.
El contenido del documento puede estar escrito utilizando diferentes formatos, entre ellos:
QuartoHTMLLaTeXCSSRStudio| Sintáxis Markdown | Salida |
|---|---|
| italics, bold, bold italics | |
| superscript2 / subscript2 | |
verbatim code |
| Sintáxis Markdown | Salida |
|---|---|
Header 1 |
|
Header 2 |
|
Header 3 |
|
Header 4 |
|
Header 5 |
|
Header 6 |
| Markdown Syntax | Output |
|---|---|
| https://quarto.org | |
| Quarto | |
| Sintáxis Markdown | Salida |
|---|---|
|
|
|
|
|
continuan después
|
|
|
|
|
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 || Right | Left | Default | Center |
|---|---|---|---|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
Usamos ``` para delimitar bloques de código:
Podemos agregar un lenguaje para destacar el código:
Pandoc ofrece 140 distintos lenguajes para destacar código.
Para una lista exhaustiva de las opciones de formato que tienen los documentos .qmd visitar https://quarto.org/docs/guide/.
Los formatos de salida más utilizados para documentos creados con Quarto son:
Para cambiar entre estos formatos, basta especificiar la salida deseada en el YAML. Otros formatos posibles:
En Quarto tenemos 3 opciones para presentaciones:
En donde RevealJS es el formato que nos entrega más herramientas. (Esta presentación fue hecha utilizando RevealJS en Quarto)
Crearemos un mismo documento en distintos formatos
Just a test (Moretti 2011)